package com.tuzhi.convert.httpclient;

import com.dtflys.forest.annotation.*;
import com.dtflys.forest.callback.OnProgress;
import com.dtflys.forest.extensions.DownloadFile;
import com.tuzhi.common.domain.ResultBO;
import com.tuzhi.convert.dto.FilesModelDto;

import java.io.File;
import java.io.InputStream;

@Address(host = "${host_fileStore}", port = "${port_fileStore}")
public interface FileStoreApi {
    /**
     * 获取转换任务模型文件信息
     *
     * @param modelId
     * @return
     */
    @Get("/fileStore/model/{modelId}")
    ResultBO<FilesModelDto> getReadyFile(@Var("modelId") Long modelId);

    /**
     * 用获取到的转换任务模型文件信息，下载cad文件
     *
     * @param dir
     * @param filename
     * @param onProgress
     * @param srcUrl
     * @return
     */
    @Get("/fileStore${srcUrl}")
    @DownloadFile(dir = "${0}", filename = "${1}")
//    @DownloadFile(dir = "${0}")//使用原文件名保存
    File getCadFile(String dir, String filename, OnProgress onProgress, @Var("srcUrl") String srcUrl);

    /**
     * 更新模型状态
     *
     * @param data
     * @param modelId
     * @return
     */
    @Put("/fileStore/model/update/{modelId}")
    ResultBO setStatus(@JSONBody Object data, @Var("modelId") Long modelId);

    /**
     * 上传转换扣的stp文件
     * ------这个会报错
     *
     * @param file
     * @param modelId
     * @return
     */
    @Post("/fileStore/file/upFile/{modelId}")
    ResultBO sendResult(@DataFile(value = "file") File file, @Var("modelId") Long modelId);

    /**
     * 上传转换扣的stp文件
     *
     * @param in
     * @param modelId
     * @return
     */
    @Post("/fileStore/file/upFile/{modelId}")
    ResultBO sendResult2(@DataFile(value = "file", fileName = "${1}") InputStream in, String filename, @Var("modelId") Long modelId);


}


